package cn.lijiancn01.demo.framework.config.mybatis;

import com.mybatisflex.annotation.SetListener;

/**
 * onSet 可以用于配置：查询数据 entity （或者 entity 列表、分页等）时，对 entity 的属性设置的监听，可以用于如下的差场景。
 * <p>
 * 场景1：字段权限，不同的用户或者角色可以查询不同的字段内容。
 * 场景2：字典回写，entity 中定义许多业务字段，当数据库字段赋值时，主动去设置业务字段。
 * 场景3：一对多，一对一查询，entity 中定义关联实体，在监听到字段赋值时，主动去查询关联表赋值。
 * 场景4：字段加密，监听到内容被赋值时，对内容进行加密处理。
 * 场景5：字段脱敏，出字段内容进行脱敏处理
 */
public class MySetListener implements SetListener {

    @Override
    public Object onSet(Object entity, String property, Object value) {
        //场景1：用于检测当前账户是否拥有该字段权限，
        //      有正常返回 value，没有权限返回 null


        //场景2：entity 中可能定义某个业务值
        //      当监听到某个字段被赋值了，这
        //      里可以主动去给另外的其他字段赋值


        //场景3：内容转换和二次加工，对 value 值进行修改后返回
        return value;
    }
}
